import docx  # pip install python-docx
from docx import Document
import re
import pandas as pd
import os


def generate_text(inputPath, fileName, outPath, sub):
    """
    获取doc解析后的文件
    :param inputPath: 文件路径
    :param fileName: 文件名
    :param outPath: 输出路径
    :param sub: 替换词
    :return:
    """
    document = Document(os.path.join(inputPath, fileName))
    tables = document.tables  # 找到我们的文档里的表格对象
    table = tables[2]  # 获取docx文件中的第3个表格

    start = []
    name = []
    id = []
    kp = []
    ranker = []
    level = []

    for i in range(1, len(table.rows) - 1):
        # 从这个表格的第一行开始遍历
        # start.append('CPAtc'+table.cell(i,0).text) #第一列
        kp.append(table.cell(i, 3).text)
        # ranker.append('CPAkp'+str(i))
        # level.append('2')

    for i in range(len(kp)):
        # 先以分号为界进行分割，具体可按不同大纲中细致分割
        x = str(kp[i]).split(('；'))

        for j in x:
            # 删除特殊字符
            # j = re.sub('[a-zA-Z0-9!"#$%&\'()*+,-./:;<=>?@，。?★、…【】《》？“”‘！[\\]^_`{|}~\s]+', "", j)
            j = re.sub('[!"#$%&\'()*+,-./:;<=>?@，。?★、…【】《》？“”‘！[\\]^_`{|}~\s]+', "", j)
            # 删除不可见字符
            j = re.sub(
                '[\001\002\003\004\005\006\007\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a]+',
                '', j)
            # 可根据不同大纲需求进行删减词
            for text in sub:
                j = re.sub(text, '', j)
            # gg = re.sub("了解", '', j)
            # ggg = re.sub("熟悉", '', gg)
            # gggg = re.sub("掌握", '', ggg)
            # ggggg = re.sub("的基本原理及使用", '', gggg)
            # gggggg = re.sub('课程介绍，', '', ggggg)
            # ggggggg = re.sub('建立', '', gggggg)

            start.append('DSDtc' + str(i + 1))
            name.append(j)
            id.append('5')
            level.append('2')

    for i in range(len(name)):
        ranker.append('DSDkp' + str(i + 1))

    # 三个字段
    dict = {'id': id, 'start': start, 'name': name, 'ranker': ranker, 'level': level}
    # 转化为DataFrame格式
    df = pd.DataFrame(dict)
    # 生成csv文件
    outfile = "{0}{1}".format(outPath, re.sub(".docx", ".csv", fileName))
    df.to_csv(outfile, encoding="utf_8_sig")
